#include <string.h>
#include <stdlib.h>
#include <stdio.h>


int ecritureFichier( char nomfichier[], camion *C) 
{
  FILE *fichbib;
  int i=0, cr = 0;
  
  if ((fichbib= fopen(nomfichier, "w"))== NULL) 
    {
      return PB_ACCES;
    }
  // Condition sur cr pour sortir de boucle au premier probleme d'ecriture
  while ((collection[i]!=NULL) && (cr >= 0)) //
    {
      cr = fprintf(fichbib,"%f\n%f\n%d\n\n", C->capacity.weight, C->capacity.surface,C->capacity.volume);
      i++;
    }
  
  fclose(fichbib);
  return cr;
}



int insererDansFichier( char nomfichier[], camion *C) 
{
  FILE *fichbib;
  int cr;
  if ((fichbib = fopen(nomfichier, "a")) == NULL) 
    {
      return PB_ACCES;
    }

  // Ecriture des informations dans le fichier
  cr = fprintf(fichbib,"%f\n%f\n%f\n\n", C->capacity.weight, C->capacity.surface, C->capacity.volume);
  fclose(fichbib);

  if (cr <= 0)
    return PB_ACCES;

  return OPERATION_OK;
}


void purgeFichierEntree( FILE *stream ) 
{
  while ((! feof(stream)) && (fgetc(stream) != '\n'));
}




int lectureFichier( char nomfichier[], CollectionOuvrages collection) 
{
  FILE *fichbib;
  FILE *logfile;
  Ouvrage ouvrage;
  int result;

  collection[0]= NULL;

  if ((fichbib= fopen(nomfichier, "r"))== NULL) 
    {
    return PB_ACCES;
    }

  while (!feof(fichbib)) 
    {
      result = 0;

      if (fgets( ouvrage.titre, TAILLE_MAX_TITRE, fichbib) == ouvrage.titre)
	result++;
      if (ouvrage.titre[strlen(ouvrage.titre)-1] == '\n')
	ouvrage.titre[strlen(ouvrage.titre)-1] = '\0';
      if (fgets( ouvrage.nomAuteur, TAILLE_MAX_AUTEUR, fichbib) == ouvrage.nomAuteur)
	result++;
      if (ouvrage.nomAuteur[strlen(ouvrage.nomAuteur)-1] == '\n')
	ouvrage.nomAuteur[strlen(ouvrage.nomAuteur)-1] = '\0';

      result += fscanf( fichbib, "%d", &ouvrage.anneeEdition);
      purgeFichierEntree( fichbib); // suppression '\n' suivant l'entier annee
      purgeFichierEntree( fichbib); // suppression saut de ligne entre deux ouvrages
      
      if (result==3)
	insererOuvrageDansCollection( collection, ouvrage);
      else 
	if (result != EOF) 
	  {
	    if ((logfile = fopen(LOGFILE, "a"))== NULL) 
	      logfile = stderr;
	    
	    fprintf(logfile, "Format de ligne incorrect\n");
	    fclose(logfile);
	    return PB_FORMAT;
	  }
    }

  fclose(fichbib);
  return OPERATION_OK;
}
